The following invention relates to a code server operating in a multi-module operating system and more, particularly to a code server which can efficiently identify and provide modules of program code quickly and efficiently to a user.
A multi-module operating system includes programs consisting of dynamically linked code modules that contain embedded references to other modules. The resolution of these external references occurs at run time under control of the operating system. The code modules can act as individual entities having knowledge of existence of other modules and frequently possess the ability to call into, or jump into, or otherwise pass program control to external code modules.
When an operating system, such as OS/2 or an environment such as Windows, is resolving these external references, the code module information is gathered. This information may contain anything that a user needs such as location, length, format, translated file information and a list of external references for each code module. Associative information may be defined as the intermodule relationship for a particular code module.
Multi-module systems such as OS/2 and Windows have a set rule for locating the required code modules by searching through local directories and directories attached through a network to locate the code modules and extract the needed code module information. Under OS/2 this is called LIBPATH and is called PATH under both Windows and DOS. The time needed to associate code modules in this way remains constant and in the absence of sufficient disk caching does not change irrespective of the number of times the same program is called, either for the same or for a different user. This is an inefficient method for associating programs.
Moreover, when code files such as applications programs are stored at locations that are remote from the ultimate program user, the operating system must view any remote file server as a storage device that contains executable files. This is in fact no different from a local storage device such as a hard or floppy disk. There are, however, numerous disadvantages to this arrangement. For example, multiple copies of code files can become scattered between a user work station and the server which makes it extremely difficult to maintain with current program updates. Also, network traffic can become dominated by remote requests for file access during association. This tends to slow down the network, and, frequently, users simply copy all of the code files onto a local hard disk to solve the problem. In the latter case coordinated updates become difficult and often storage space is wasted. Also, the file server must have one copy of the code file for each and every configuration of target machine. Finally, in a single computer multi-tasking system, so much swapping can be caused by the action of reading and rereading the code file data that the process of association completely dominates the useful work being done by the machine.
According to the present invention a code server is provided which stores the information generated when code modules are associated. This information is stored in a table form at the code server, and when the program is requested by a user, the code server queries its tables to see if the information for that program or module is already stored. This greatly reduces the search time required to locate the same information as a result of subsequent requests which would normally occur by searching in various directories. As a result, the network is less loaded. There is less traffic generated by needless search requests. Code files can be maintained efficiently because there will be no need to have multiple copies of the same code stored in local storage devices where it may be difficult to locate in the event that updates are necessary.
The code server of the present invention operates in a data processing system having an operating system which processes coded programs in discrete modules. The code server, which provides information to users of the data processing system, includes an information storage table containing linkage information needed to form an association between discrete modules of code forming at least parts of a coded program, and includes the capability for updating the information storage table as a result of search requests for coded programs whose association data was not previously included in the information storage table.
The code server may also include a translation function for translating from an intermediate code so that the resultant, final code may be used on different types of machines. Information relating to the translated or nontranslated status of code modules may also be stored in the code server tables.
It is a principal object of this invention to provide a code server in a multi-module operating system which can provide information linking coded modules to a requesting user in a fast and efficient manner.
It is a further object of this invention to provide a code server for users of a multi-module operating system which maintains a status information look-up table containing association data pertaining to modules of code thus lessening the need for local storage of coded programs.
Yet a further object of this invention is to provide a code server which can maintain coded programs in a centralized fashion.
Still a further object of this invention is to provide a code server in a multi-module operating system or environment which includes a storage information table which automatically learns association data linking various coded modules together as modules are requested by a user.
The foregoing and other objectives, features and advantages of the invention will be more readily understood upon consideration of the following detailed description of the invention, taken in conjunction with the accompanying drawings.